{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import Counter\n",
    "from sklearn.datasets import make_classification\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "类别： Counter({0: 9900, 1: 100})\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 1 生成数据集\n",
    "X, y = make_classification(n_samples=10000, n_features=2, n_redundant=0, n_clusters_per_class=1, weights=[0.99],\n",
    "                           flip_y=0, random_state=1)\n",
    "\n",
    "counter = Counter(y) # 统计类别数量\n",
    "\n",
    "print(\"类别：\", counter)\n",
    "\n",
    "# 可视化显示\n",
    "plt.scatter(X[y==0,0], X[y==0,1], color='r')\n",
    "plt.scatter(X[y==1,0], X[y==1,1], color='b')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "counter_2 :  Counter({0: 9900, 1: 9900})\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 2 利用SMOTE技术处理样本不平衡\n",
    "# 注意：需要安装：imblance，pip3 install imblearn\n",
    "\n",
    "from imblearn.over_sampling import SMOTE\n",
    "# 创建对象\n",
    "smote = SMOTE()\n",
    "\n",
    "# 综合生成数据\n",
    "X_new, y_new = smote.fit_resample(X, y)\n",
    "\n",
    "counter_2 = Counter(y_new)\n",
    "print(\"counter_2 : \", counter_2)\n",
    "\n",
    "# 可视化显示\n",
    "plt.scatter(X_new[y_new==0,0], X_new[y_new==0,1], color='r')\n",
    "plt.scatter(X_new[y_new==1,0], X_new[y_new==1,1], color='b')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "类别： Counter({0: 1980, 1: 990})\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 3 对少数类进行SMOTE，对多数类进行random undersampling\n",
    "from imblearn.over_sampling import SMOTE\n",
    "from imblearn.under_sampling import RandomUnderSampler\n",
    "from imblearn.pipeline import Pipeline\n",
    "\n",
    "over = SMOTE(sampling_strategy=0.1) # 10%\n",
    "under = RandomUnderSampler(sampling_strategy=0.5) # 50%\n",
    "\n",
    "# 使用pipeline\n",
    "steps = [('o', over), ('u', under)]\n",
    "\n",
    "pipeline = Pipeline(steps=steps)\n",
    "\n",
    "X_new_2, y_new_2 = pipeline.fit_resample(X, y)\n",
    "\n",
    "count_3 = Counter(y_new_2)\n",
    "print(\"类别：\", count_3)\n",
    "\n",
    "# 可视化显示\n",
    "plt.scatter(X_new_2[y_new_2==0,0], X_new_2[y_new_2==0,1], color='r')\n",
    "plt.scatter(X_new_2[y_new_2==1,0], X_new_2[y_new_2==1,1], color='b')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
